package com.eian.boot.common.enums;

import com.eian.boot.common.core.enums.IBaseEnum;
import lombok.Getter;

/**
 * 数据权限范围枚举
 *
 * @author alex.meng
 * @createTime 2025-10-14
 */
@Getter
public enum DataScopeEnum implements IBaseEnum<Integer> {

    /**
     * 全部数据权限
     */
    ALL(1, "全部数据权限", "可以查看所有数据"),

    /**
     * 自定义数据权限
     */
    CUSTOM(2, "自定义数据权限", "可以查看指定部门的数据"),

    /**
     * 本部门数据权限
     */
    DEPT(3, "本部门数据权限", "只能查看本部门数据"),

    /**
     * 本部门及以下数据权限
     */
    DEPT_AND_CHILD(4, "本部门及以下数据权限", "可以查看本部门及子部门数据"),

    /**
     * 仅本人数据权限
     */
    SELF(5, "仅本人数据权限", "只能查看自己的数据");

    private final Integer value;
    private final String label;
    private final String description;

    DataScopeEnum(Integer value, String label, String description) {
        this.value = value;
        this.label = label;
        this.description = description;
    }

    public static DataScopeEnum getByValue(Integer value) {
        return IBaseEnum.getByValue(DataScopeEnum.class, value);
    }

    public static DataScopeEnum getByLabel(String label) {
        return IBaseEnum.getByLabel(DataScopeEnum.class, label);
    }
}

